class: inverse,left, middle background-image: url(data:image/png;base64,#background.png) background-size: cover <img src="data:image/png;base64,#LOGO_DIPLOMADO.png" width="500px"/> ##Módulo 1: Manipulación y Análisis de Datos Geoespaciales ###R como SIG: Apertura y manipulación de datos geoespaciales José A. Lastra<br> <a href="http://github.com/JoseLastra"> Github: JoseLastra</a><br> <a href="mailto:jose.lastra@pucv.cl"> jose.lastra@pucv.cl</a><br> .large[<b><a href="https://www.pucv.cl/uuaa/site/edic/base/port/labgrs.html">LabGRS</a> | Agosto 2022</b>] <br> --- class: center,middle background-image: url(data:image/png;base64,#labgrs_logo.png) background-size: 35% --- ## Contenidos .pull-left[ - Modelos de datos espaciales - Lectura de datos vectoriales * Estructura de la información * Visualización básica de datos - Lectura de datos ráster * Estructura de la información * Visualización básica ] .pull-right[ <img src="data:image/png;base64,#https://raw.githubusercontent.com/allisonhorst/stats-illustrations/main/rstats-artwork/r_rollercoaster.png" width="650px"/> © Allison Horst ] --- ## Geo-datos o datos geográficos .left-column[ - Los geodatos son una forma simple de representar la realidad a través de **modelos vectoriales** y **modelos ráster**. ] .right-column[ <img src="data:image/png;base64,#https://volaya.github.io/libro-sig/img/Primitivas_vectoriales.png" width="750px" align = "center"/> Olaya, 2020 ] --- ## ¿Cómo elegimos? -- - Los vectores suelen usarse en el ámbito de las ciencias sociales (elementos mayoritariamente discretos) -- - Los rásters dominan principalmente las ciencias ambientales. -- - Sin embargo, existe traslape entre ambos modelos generalmente. -- <center><img src="data:image/png;base64,#http://www.gitta.info/what_gis/en/image/less1_fig4.gif" width="600px"/></center> <center>GITTA</center> --- ## Manipulación de datos espaciales en R -- - El trabajo con geo-datos en R es un mundo creciente y bastante dinámico en torno a las funcionalidades y análisis que se pueden realizar. - Existen diferentes librerÃas diseñadas para la apertura, visualización y manipulación de geo-datos. - En el pasado, las librerÃas de uso más fecuentes eran: [**rgdal**](https://CRAN.R-project.org/package=rgdal), [**raster**](https://CRAN.R-project.org/package=raster) (funcionando a través de _rgdal_) y [**sp**](https://CRAN.R-project.org/package=sp). - Actualmente, con el retiro de **rgdal** [*leer más*](https://www.mail-archive.com/r-sig-geo@r-project.org/msg18468.html) las nuevas librerÃas recomendadas para el uso son [**sf**](https://CRAN.R-project.org/package=sf), [**terra**](https://CRAN.R-project.org/package=terra) y [**stars**](https://CRAN.R-project.org/package=stars) entre otras. > Usaremos **sf** para la apertura y manipulación de nuestros datos vectoriales y **terra** para nuestra información grillada --- ## Lectura de datos vectoriales -- - Podemos leer diferentes clases de archivos (shp, geopackage, geojson, etc.) empleando diversas funciones de lectura disponibles en las librerÃas mencionadas anteriormente -- - Es importante siempre tener la noción de donde estaremos trabajando, para esto se puede crear un proyecto y asignarlo a un directorio con nuestros datos (**File/New Project**) o emplear la función **setwd()** para indicar en el script nuestro directorio de lectura y guardado. ```r setwd('C:/Carpeta') #ruta de trabajo ``` -- - Cargue la librerÃa sf empleando la función **library**, `library(sf)` y emplee la función **read_sf()** ```r comunas <- read_sf('Comunas_Maule.shp') ``` --- ##Estructura de la información -- - Podemos revisar diferentes caracterÃsticas de nuestra información: ```r class(comunas) #revisar clase del objeto ``` ``` ## [1] "sf" "tbl_df" "tbl" "data.frame" ``` ```r st_crs(comunas)[1] #revisar sistema de referencia espacial ``` ``` ## $input ## [1] "WGS 84 / UTM zone 19S" ``` --- ## Estructura de la información -- - **sf** hace referencia a _simple feartures_, modelo de datos jerárquico de estándar abierto desarrollado por el [Open Geospatial Consortium (OGC)](https://www.ogc.org/) <center><img src="data:image/png;base64,#https://geocompr.robinlovelace.net/figures/sf-classes.png" width="400px"/> </center> Fuente: [Lovelace et al., 2022](https://geocompr.robinlovelace.net/spatial-class.html) --- ```r head(comunas,2) # revisar primeras 2 filas ``` ``` ## Simple feature collection with 2 features and 7 fields ## Geometry type: POLYGON ## Dimension: XY ## Bounding box: xmin: 171954.9 ymin: 6056323 xmax: 273740.7 ymax: 6110782 ## Projected CRS: WGS 84 / UTM zone 19S ## # A tibble: 2 x 8 ## CUT_REG CUT_PROV CUT_COM REGION PROVINCIA COMUNA SUPERFICIE ## <chr> <chr> <chr> <chr> <chr> <chr> <dbl> ## 1 07 071 07101 Maule Talca Talca 232. ## 2 07 071 07102 Maule Talca Constitución 1340. ## # ... with 1 more variable: geometry <POLYGON [m]> ``` <center><img src="data:image/png;base64,#sf_sfc.png" width="800px"/> </center> --- ##Visualizando información -- - Para graficar podemos usar la función **plot**, -- ```r #Plot básico plot(comunas) #mostrará todas las columnas disponibles en la tabla ``` <img src="data:image/png;base64,#apertura_manipulacion_files/figure-html/unnamed-chunk-6-1.png" width="100%" /> --- ## Mejorando el gráfico -- - Ploteando solo una columna ```r plot(comunas['SUPERFICIE']) ``` <img src="data:image/png;base64,#apertura_manipulacion_files/figure-html/unnamed-chunk-7-1.png" width="100%" /> --- ```r plot(comunas['SUPERFICIE'], #campo de interés breaks='quantile', #tipo de quiebres de clase key.pos = 4, #posición de la leyenda axes=T) #presencia de los ejes ``` <img src="data:image/png;base64,#apertura_manipulacion_files/figure-html/unnamed-chunk-8-1.png" width="80%" style="display: block; margin: auto;" /> --- ```r plot(comunas$geometry, axes=T) #presencia de los ejes) ``` <img src="data:image/png;base64,#apertura_manipulacion_files/figure-html/unnamed-chunk-9-1.png" width="80%" height="90%" style="display: block; margin: auto;" /> --- ## Otras formas de lectura de vectores -- - Como vimos, con **sf** podemos leer de forma simple nuestras capas. - Sin embargo, también podemos recurrir a las funciones de lectura de **rgdal** o **terra** de ser necesario para algún proceso sin compatibilidad -- ```r comunas_terra <- terra::vect(x = 'Comunas_Maule.shp') comunas_rgdal <- rgdal::readOGR(dsn= 'Directorio', layer = 'Comunas_Maule') ```
--- ## Lectura de datos ráster -- - En general vamos a tener diferentes fuentes de información: * Interpolaciones * Imágenes satelitales * Modelos (oceánicos, climáticos, hidrodinámicos, etc.) * Aquà además de tener en cuenta el sistema de referencia espacial debemos considerar un aspecto clave que tiene que ver con la resolución espacial de la información, también entendida como el tamaño del pixel o celda. <center><img src="data:image/png;base64,#https://erinbecker.github.io/r-raster-vector-geospatial/images/dc-spatial-raster/single_multi_raster.png" width="450px"/> </center> Fuente: [National Ecological Observatory Network (NEON)](https://www.neonscience.org/) --- ## Lectura de archivos ráster -- - Para abrir datos ráster con **terra** use la función **rast()** luego de cargar la librerÃa con `library(terra)` ```r library(terra) DEM <- rast('s35w072.hgt') ``` -- ```r class(DEM) ``` ``` ## [1] "SpatRaster" ## attr(,"package") ## [1] "terra" ``` ```r print(DEM) ``` ``` ## class : SpatRaster ## dimensions : 3601, 3601, 1 (nrow, ncol, nlyr) ## resolution : 0.0002777778, 0.0002777778 (x, y) ## extent : -72.00014, -70.99986, -35.00014, -33.99986 (xmin, xmax, ymin, ymax) ## coord. ref. : lon/lat WGS 84 (EPSG:4326) ## source : s35w072.hgt ## name : s35w072 ``` --- ## Graficar archivos ráster -- ```r plot(DEM) #grafico basico ``` --- ```r plot(DEM, col=terrain.colors(12), #paleta de colores breaks = 12) #número de clases ``` <img src="data:image/png;base64,#apertura_manipulacion_files/figure-html/unnamed-chunk-16-1.png" width="80%" style="display: block; margin: auto;" /> -- - Para conocer más parámetros disponibles puede emplear el comando `?"plot,SpatRaster,missing-method"` --- ## Otras formas de lectura de archivos ráster -- - Como vimos, con **terra** seolo necesitamos una función para cargar archivos. - Sin embargo, podemos recurrir a **raster** para abrir datos según su tipo: **raster()** para una banda, **stack()** o **brick()** para archivos multibanda. -- ```r DEM_raster <- raster::raster(x = 's35w072.hgt') ```
--- class: inverse middle 